<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>IDA SDK: tinfo_visitor_t Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">IDA SDK
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="files.html"><span>Header&#160;Files</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="structtinfo__visitor__t-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">tinfo_visitor_t Struct Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Visit all subtypes of a type. Derive your visitor from this class and use <a class="el" href="structtinfo__visitor__t.html#a54a41aedc5c7d47ec64ce960614ba829" title="Call this function to initiate the traversal. ">apply_to()</a> </p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:abe4a4b1e8706c4107f80240cd7a0e1cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe4a4b1e8706c4107f80240cd7a0e1cf"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtinfo__visitor__t.html#abe4a4b1e8706c4107f80240cd7a0e1cf">state</a></td></tr>
<tr class="memdesc:abe4a4b1e8706c4107f80240cd7a0e1cf"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group___t_v_s_t__.html">tinfo visitor states</a> <br /></td></tr>
<tr class="separator:abe4a4b1e8706c4107f80240cd7a0e1cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a7eeb997bc3a10e3993edb764091597a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7eeb997bc3a10e3993edb764091597a3"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>tinfo_visitor_t</b> (int s=0)</td></tr>
<tr class="separator:a7eeb997bc3a10e3993edb764091597a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c8004a7164c0fd4ecaf1f06cff4909e"><td class="memItemLeft" align="right" valign="top">virtual int <a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtinfo__visitor__t.html#a7c8004a7164c0fd4ecaf1f06cff4909e">visit_type</a> (<a class="el" href="structtype__mods__t.html">type_mods_t</a> *out, const <a class="el" href="classtinfo__t.html">tinfo_t</a> &amp;tif, const char *name, const char *cmt)=0</td></tr>
<tr class="memdesc:a7c8004a7164c0fd4ecaf1f06cff4909e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visit a subtype.  <a href="#a7c8004a7164c0fd4ecaf1f06cff4909e">More...</a><br /></td></tr>
<tr class="separator:a7c8004a7164c0fd4ecaf1f06cff4909e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0f9adecd915c563dcda3b21237b0499"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0f9adecd915c563dcda3b21237b0499"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtinfo__visitor__t.html#af0f9adecd915c563dcda3b21237b0499">prune_now</a> (void)</td></tr>
<tr class="memdesc:af0f9adecd915c563dcda3b21237b0499"><td class="mdescLeft">&#160;</td><td class="mdescRight">To refuse to visit children of the current type, use this: <br /></td></tr>
<tr class="separator:af0f9adecd915c563dcda3b21237b0499"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54a41aedc5c7d47ec64ce960614ba829"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54a41aedc5c7d47ec64ce960614ba829"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtinfo__visitor__t.html#a54a41aedc5c7d47ec64ce960614ba829">apply_to</a> (const <a class="el" href="classtinfo__t.html">tinfo_t</a> &amp;tif, <a class="el" href="structtype__mods__t.html">type_mods_t</a> *out=NULL, const char *name=NULL, const char *cmt=NULL)</td></tr>
<tr class="memdesc:a54a41aedc5c7d47ec64ce960614ba829"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this function to initiate the traversal. <br /></td></tr>
<tr class="separator:a54a41aedc5c7d47ec64ce960614ba829"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a7c8004a7164c0fd4ecaf1f06cff4909e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int <a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a> tinfo_visitor_t::visit_type </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structtype__mods__t.html">type_mods_t</a> *&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classtinfo__t.html">tinfo_t</a> &amp;&#160;</td>
          <td class="paramname"><em>tif</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>cmt</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Visit a subtype. </p>
<p>this function must be implemented in the derived class. it may optionally fill out with the new type info. this can be used to modify types (in this case the 'out' argument of <a class="el" href="structtinfo__visitor__t.html#a54a41aedc5c7d47ec64ce960614ba829" title="Call this function to initiate the traversal. ">apply_to()</a> may not be NULL) return 0 to continue the traversal. return !=0 to stop the traversal. </p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="typeinf_8hpp.html">typeinf.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>
